Presently, system-on-a-chip vendors may sell many different varieties of the same chip, where each variety is configured for a particular application. Chip configuration often occurs by blowing one or more fuses or otherwise programming a one-time programmable memory on the chip. This type of chip configuration is generally a one-way process and cannot be undone. One method of circumventing the permanence of the configuration process is to add redundant or spare bits within the one-time programmable memory that can be combined to modify a previous setting (e.g., by exclusive-ORing multiple bits together to produce the final configuration setting). This type of redundancy has limited flexibility, however, and requires additional fuses which take up additional real estate on the chip. In addition, having multiple fuses behind a setting does not remove the need to perform multiple programming steps to configure chips adds cost. Likewise, configurations today continue to be performed by chip vendors (or their contractors), who then maintain inventories of chips with multiple fuse configurations.
The stockpiling of the different varieties of the same chip is often inefficient. For example, stockpiled chips configured for a particular application are potentially wasted if they were overproduced or if customers' chip configuration needs change. Additionally, in some cases order fulfillment can be delayed if inventory of the configured chips is insufficient to meet the demand. Moreover, the present model of configuration by the chip vendor can limit the range of business relationships and revenue streams practical between chip vendors and downstream customers. For example, the present model may limit the ability to generate future revenue from reconfiguration of chips after their initial sale. If a downstream customer wishes to obtain features beyond the configured feature set, current chips typically lack means for unlocking this functionality and there is therefore no opportunity to use downstream feature enablement as a revenue stream.
Moreover, the need for secure systems and applications is growing. Presently, allegedly secure chips are often programmed with security keys on the factory floor. Secure keys may be used in a variety of ways, such as, for example, to protect stored data, control access to digital content, or encrypt/authenticate data used in transactions. Today, these keys can be stored in a one-time programmable memory, which may hold keys directly or hold a base key that is used with cryptographic functions that derivative keys for various functions. Typically, security is provided by performing the key loading process in a secured facility.